<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use app\admin\model\CartModel;

class CartController extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request $request)
    {
        //获取登录用户id
        $uid = $request->uuid;
        //显示购物车商品
        $data = CartModel::with('user,goods')->where('u_id', $uid)->all();
        //获取关联模型user中nick_name属性和goods模型中name属性
        $data->visible(['user'=>['nick_name'], 'goods'=>['name','goods_detail']])->toArray();
        //判断
        if ($data) {
            return \sendResponse($data);
        }

        return \sendResponse([]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //加入购物车
        $params = $request->post();
        //登录用户id
        $params['u_id'] = $request->uuid;
        //判断购物车是否已经存在此商品,并且属性要相同，属性不同的则认为是不同的商品
        $goods = CartModel::where('goods_id', $params['goods_id'])->where('u_id', $params['u_id'])->where('goods_specs', $params['goods_specs'])->find(); 
        if ($goods) {
            //购物车已存在此商品，增加数量
            $goods_num = $goods['goods_num'] + $params['goods_num'];
            //修改此商品数量
            $res = CartModel::update(['goods_num'=> $goods_num], ['id'=> $goods['id']]);
        } else {
            //不存在则添加到购物车
            $res = CartModel::create($params);
        }
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //接收数量
        $goods_num = $request->post('goods_num');
        //修改购物车数量
        $res = CartModel::update(['goods_num'=> $goods_num], ['id'=> $id]);
        //判断
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }

    /**
     * 购物车商品数量+1
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function plus(Request $request, $id)
    {
        //接收数量
        $goods_num = $request->post('goods_num');
        //判断数量是否大于100
        if ($goods_num >100) {
            return \sendResponse('', 4002);
        }
        $goods_num += 1;
        //修改购物车数量
        $res = CartModel::update(['goods_num'=> $goods_num], ['id'=> $id]);
        //判断
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }

    /**
     * 购物车商品数量-1
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function reduce(Request $request, $id)
    {
        //接收数量
        $goods_num = $request->post('goods_num');
        //判断数量是否为1
        if ($goods_num == 1) {
            return \sendResponse('', 4001);
        }
        //数量-1
        $goods_num -= 1;
        //修改购物车数量
        $res = CartModel::update(['goods_num'=> $goods_num], ['id'=> $id]);
        //判断
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete()
    {
        //接收id
        $id= $_GET['id'];
        //删除购物车商品
        $res = CartModel::destroy($id);
        //判断
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }
}
